home *** CD-ROM | disk | FTP | other *** search
/ HPAVC / HPAVC CD-ROM.iso / ABERMUD.ZIP / ZONES.C < prev   
C/C++ Source or Header  |  1989-07-08  |  3KB  |  151 lines

  1. #include <stdio.h>
  2.  
  3.  /*
  4.  Zone based name generator
  5.  */
  6.  
  7. struct zone
  8. {
  9.     char *z_name ;
  10.     long z_loc ;
  11. } ;
  12.  
  13. typedef struct zone ZONE ;
  14.  
  15. ZONE zoname[  ]={
  16.     "LIMBO", 1, "WSTORE", 2, "HOME", 4, "START", 99, "BLIZZARD"
  17.     } ;
  18.  
  19.  findzone( x, str )
  20.  char *str ;
  21.     {
  22.     extern ZONE zoname[] ;
  23.     long a, b ;
  24.     long c ;
  25.     a=0 ;
  26.     b=0 ;
  27.     x= -x ;
  28.     if( x<=0 )
  29.        {
  30.        strcpy( str, "TCHAN" ) ;
  31.        return( 0 ) ;
  32.        }
  33.  
  34.     while( a<x )
  35.        {
  36.        strcpy( str, zoname[ b ].z_name ) ;
  37.        c=a ;
  38.        a=zoname[ b ].z_loc ;
  39.        b++;
  40.        }
  41.     return( x-c ) ;
  42.     }
  43.  
  44. long ex_dat[ 7 ] ;
  45.  
  46.  exits(  )
  47.     {
  48.     long a ;
  49.     extern long my_lev ;
  50.     long b ;
  51.     char st[ 64 ];
  52.     long v ;
  53.     extern long ex_dat[] ;
  54.     extern char *dirns[] ;
  55.     a=0 ;
  56.     b=0 ;
  57.     bprintf( "Obvious exits are\n" ) ;
  58.     while( a<6 )
  59.        {
  60.        if( ex_dat[ a ]>=0 )
  61.           {
  62.           a++ ;
  63.           continue ;
  64.           }
  65.        if( my_lev<10 )bprintf( "%s\n", dirns[ a ] ) ;
  66.        else
  67.           {
  68.           v=findzone( ex_dat[ a ], st ) ;
  69.           bprintf( "%s : %s%d\n", dirns[ a ], st, v ) ;
  70.           }
  71.        b=1 ;
  72.        a++ ;
  73.        }
  74.     if( b==0 )bprintf( "None....\n" ) ;
  75.     }
  76.  
  77. char *dirns[  ]={"North", "East ", "South", "West ", "Up   ", "Down "} ;
  78.  
  79.  lodex( file )
  80.  FILE *file;
  81.     {
  82.     long a ;
  83.     extern long ex_dat[] ;
  84.     a=0 ;
  85.     while( a<6 )
  86.        {
  87.        fscanf(file," %ld ",&ex_dat[ a ]);
  88.        a++ ;
  89.        }
  90.     }
  91.  roomnum( str, offstr )
  92.  char *str;
  93.  char *offstr;
  94.     {
  95.     long a, b, c ;
  96.     long d ;
  97.     extern ZONE zoname[] ;
  98.     extern char wd_there[];
  99.     char w[64] ;
  100.     b=0 ;c=0 ;
  101.     a=0 ;
  102.     while( b<99990 )
  103.        {
  104.        strcpy( w, zoname[ a ].z_name ) ;lowercase( w ) ;
  105.        if( !strcmp( w, str ) ) goto fnd1 ;
  106.        b=zoname[ a ].z_loc ;
  107.        a++ ;
  108.        }
  109.     return( 0 ) ;
  110.     fnd1: ;
  111.     c=zoname[ a ].z_loc ;
  112.     sscanf(offstr,"%ld",&d);
  113.     if( !strlen( offstr ) ) d=1 ;
  114.     sprintf(wd_there,"%s %s",str,offstr);
  115.     if( d==0 ) return( 0 ) ;
  116.     if( d+b>c ) return( 0 ) ;
  117.     return( -( d+b ) ) ;
  118.     }
  119.  showname( loc )
  120.     {
  121.     extern long my_lev ;
  122.     char a[64] ;
  123.     extern char wd_there[];
  124.     long b ;
  125.     b=findzone( loc, a ) ;
  126.     bprintf( "%s%d", a, b ) ;
  127.     if( my_lev>9999 )bprintf( "[ %d ]", loc ) ;
  128.     sprintf(wd_there,"%s %d",a,b);
  129.     bprintf( "\n" ) ;
  130.     }
  131.  loccom(  )
  132.     {
  133.     extern long my_lev ;
  134.     extern ZONE zoname[] ;
  135.     long a ;
  136.     a=0 ;
  137. if( my_lev<10 )
  138. {
  139. bprintf( "Oh go away, thats for wizards\n" ) ;
  140. return ;
  141. }
  142.     bprintf( "\nKnown Location Nodes Are\n\n" ) ;
  143.     l1:bprintf( "%-20s", zoname[ a].z_name ) ;
  144.     if( a%4==3 ) bprintf( "\n" ) ;
  145.     if( zoname[ a++ ].z_loc!=99999 ) goto l1 ;
  146.     bprintf( "\n" ) ;
  147.     }
  148.  
  149.  
  150.  
  151.